<?
    define ("UTILIZADOR", 1);
    define ("CADEIRA", 2);
    define ("PREÇO", 3);
    define ("DATA", 4);

	class classificados
	{
        private $t_classificados;
        private $registry;
        
		function __construct($registry, $classificados)
        {
            $this->registry = $registry;
            $this->t_classificados = $classificados;
        }

		function Banir($Anuncio_ID)
		{
            return Remover($Anuncio_ID);
		}

		function Editar($Class_Info)
		{
            $Query = 'UPDATE classificados SET      titulo      = "' . $Class_Info["titulo"] . '",
                                                    descricao   = "' . $Class_Info["descricao"]   . '",
                                                    preco       = ' . $Class_Info["preco"]   . ',
                                                    data_mod    = NOW()
                        WHERE ID = ' . $Class_Info["ID"];
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::Editar</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            return true;
		}

        function GetByID($ID)
        {
            $Query = 'SELECT * FROM classificados WHERE id = ' . $ID . ' LIMIT 1';
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::GetByID</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            return mysql_fetch_row($Res);
        }

        function GetCountByCadeira($id_cadeira)
        {
            $Query = 'SELECT id FROM classificados WHERE id_cadeira = ' . $id_cadeira;
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::GetCountByCadeira</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }
            
            return mysql_num_rows($Res);
        }

        function Listar($OrderBy, $Asc)
        {
            if($Asc) $Dir = "ASCE";
            else $Dir = "DESC";

            switch($OrderBy)
            {
                case UTILIZADOR: $OrderBy = "ORDER BY id_utilizador";
                                 break;
                case CADEIRA:    $OrderBy = "ORDER BY id_cadeira";
                                 break;
                case PREÇO:      $OrderBy = "ORDER BY preco";
                                 break;
                case DATA:       $OrderBy = "ORDER BY data_ad";
                                 break;
            }
            
            $Query = 'SELECT * FROM classificados ' . $OrderBy . ' ' . $Dir;
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::GetCountByCadeira</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            $Data = Array();
            while($Row = mysql_fetch_array($Res, MYSQL_ASSOC))
               $Data[] = $Row;

            return $Data;
        }

        function ListarDaCadeira($id_cadeira, $OrderBy, $Asc)
        {

            if($Asc) $Dir = "ASC";
            else $Dir = "DESC"; 

            switch($OrderBy)
            {
                case UTILIZADOR: $OrderBy = "ORDER BY id_utilizador";
                                 break;
                case CADEIRA:    $OrderBy = "ORDER BY id_cadeira";
                                 break;
                case PREÇO:      $OrderBy = "ORDER BY preco";
                                 break;
                case DATA:       $OrderBy = "ORDER BY data_ad";
                                 break;
            }

            $Query = 'SELECT * FROM classificados WHERE id_cadeira=' . $id_cadeira . ' ' . $OrderBy . ' ' . $Dir;
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::GetCountByCadeira</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            $Data = Array();
            while($Row = mysql_fetch_array($Res, MYSQL_ASSOC))
               $Data[] = $Row;

            return $Data;
        }

        function ListarDoUtilizador($id_Utilizador)
        {
            $Query = 'SELECT classificados.*, cadeiras.nome FROM classificados
                      INNER JOIN cadeiras on classificados.id_cadeira = cadeiras.id' .
                    ' WHERE id_utilizador = ' . $id_Utilizador . ' ORDER BY data_ad DESC';
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::ListarDoUtilizador</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            $Data = Array();
            while($Row = mysql_fetch_array($Res, MYSQL_ASSOC))
               $Data[] = $Row;

            return $Data;
        }

		function Registar($UserID, $Class_Info)
		{
            $Query = 'INSERT INTO classificados (   id_utilizador,
                                                    id_cadeira,
                                                    titulo,
                                                    descricao,
                                                    preco,
                                                    data_ad,
                                                    data_mod) VALUES (
                                                    ' . $UserID . ',
                                                    ' . $Class_Info["cadeira"] . ',
                                                    "' . $Class_Info["titulo"] . '",
                                                    "' . $Class_Info["descricao"]   . '",
                                                    ' . $Class_Info["preco"]  . ',
                                                    NOW(),
                                                    NOW()
                                                    )';
            $Res = mysql_query($Query);
            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::Registar</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            return true;
		}

		function Remover($Anuncio_ID)
		{
            $Query = 'DELETE FROM classificados WHERE id = ' . $Anuncio_ID;
            $Res = mysql_query($Query);

            if(!$Res)
            {
                if(Debug) echo  mysql_error() . " @ Classificados::Remover</BR>";
                else echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
                die();
            }

            return true;
		}
		
		function pesquisa_avancada($q, $field, $indice, $ordena_by='id', $sentido='DESC', $lim=10)
		{
			$offset = ($indice - 1) * $lim;
			$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
			" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
			" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
			" WHERE " . $field . " LIKE '%" . $q . "%'" .
			" ORDER BY " . $ordena_by . " " . $sentido . " limit " . $offset . ", " . $lim ;
		
			$result = mysql_query($query);
			if(!$result)
			{
				if(Debug)
					echo  mysql_error() . " @ function lista classe cadeiras<br />";
				echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
				die();
				exit;
			}
		
			if(mysql_num_rows($result) == 0)
			{
				return;
			}
		
		
			$contents = Array();
			while($row = mysql_fetch_array($result, MYSQL_ASSOC))
			{
				$contents[] = $row;
			}
		
			$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
			" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
			" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
			" WHERE " . $field . " LIKE '%" . $q . "%'";
			$result = mysql_query($query);
			if(!$result)
			{
				if(Debug)
					echo  mysql_error() . " @ function lista classe cadeiras<br />";
				echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
				die();
				exit;
			}
		
			$num = mysql_fetch_array($result, MYSQL_ASSOC);
			$contents['numrows'] = mysql_num_rows($result);
		
			return $contents;
		}
		
		function pesquisa_por_cadeira($q, $cadeira, $indice, $ordena_by='id', $sentido='DESC', $lim=10)
		{
			$offset = ($indice - 1) * $lim;
			$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
			" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
			" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id and cadeiras.id='" . $cadeira . "'" . 
			" WHERE cadeiras.nome LIKE '%" . $q . "%'" .
			" OR classificados.data_ad LIKE '%" . $q . "%'" .
			" OR classificados.descricao LIKE '%" . $q . "%'" .
			" OR classificados.titulo LIKE '%" . $q . "%'" .
			" OR utilizadores.email LIKE '%" . $q . "%'" .
			" ORDER BY " . $ordena_by . " " . $sentido . " limit " . $offset . ", " . $lim ;
		
			$result = mysql_query($query);
			if(!$result)
			{
				if(Debug)
					echo  mysql_error() . " @ function lista classe cadeiras<br />";
				echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
				die();
				exit;
			}
		
			if(mysql_num_rows($result) == 0)
			{
				return;
			}
		
		
			$contents = Array();
			while($row = mysql_fetch_array($result, MYSQL_ASSOC))
			{
				$contents[] = $row;
			}
		
			$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
			" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
			" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id and cadeiras.id='" . $cadeira . "'" . 
			" WHERE cadeiras.nome LIKE '%" . $q . "%'" .
			" OR classificados.data_ad LIKE '%" . $q . "%'" .
			" OR classificados.descricao LIKE '%" . $q . "%'" .
			" OR classificados.titulo LIKE '%" . $q . "%'" .
			" OR utilizadores.email LIKE '%" . $q . "%'";
			$result = mysql_query($query);
			if(!$result)
			{
				if(Debug)
					echo  mysql_error() . " @ function lista classe cadeiras<br />";
				echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
				die();
				exit;
			}
		
			$num = mysql_fetch_array($result, MYSQL_ASSOC);
			$contents['numrows'] = mysql_num_rows($result);
		
			return $contents;
		}
		
		function pesquisa_simples($q, $indice, $ordena_by='id', $sentido='DESC', $lim=10)
		{
			$offset = ($indice - 1) * $lim;
			$query = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
			" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
			" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
			" WHERE cadeiras.nome LIKE '%" . $q . "%'" .
			" OR classificados.data_ad LIKE '%" . $q . "%'" .
			" OR classificados.descricao LIKE '%" . $q . "%'" .
			" OR classificados.titulo LIKE '%" . $q . "%'" .
			" OR utilizadores.email LIKE '%" . $q . "%'" .
			" ORDER BY " . $ordena_by . " " . $sentido . " limit " . $offset . ", " . $lim ;
		
			$result = mysql_query($query);
			if(!$result)
			{
				if(Debug)
					echo  mysql_error() . " @ function lista classe cadeiras<br />";
				echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
				die();
				exit;
			}
		
			if(mysql_num_rows($result) == 0)
			{
				return;
			}
		
		
			$contents = Array();
			while($row = mysql_fetch_array($result, MYSQL_ASSOC))
			{
				$contents[] = $row;
			}
		
			$query2 = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
			" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
			" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " . 
			" WHERE cadeiras.nome LIKE '%" . $q . "%'" .
			" OR classificados.data_ad LIKE '%" . $q . "%'" .
			" OR classificados.descricao LIKE '%" . $q . "%'" .
			" OR classificados.titulo LIKE '%" . $q . "%'" .
			" OR utilizadores.email LIKE '%" . $q . "%'";
			$result = mysql_query($query2);
			if(!$result)
			{
				if(Debug)
					echo  mysql_error() . " @ function lista classe cadeiras<br />";
				echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
				die();
				exit;
			}
		
			$contents['numrows'] = mysql_num_rows($result);
			return $contents;
		}
		
	function get_byField($field_value, $field)
    {
    	$sql = "SELECT classificados.*, utilizadores.email, cadeiras.nome as cadeira FROM " . $this->t_classificados .
		" INNER JOIN utilizadores on classificados.id_utilizador=utilizadores.id " .
		" INNER JOIN cadeiras on classificados.id_cadeira=cadeiras.id " .
    	" WHERE classificados." . $field . "='" . $field_value . "'"; 
    	
		$result = mysql_query($sql);
		// Mysql_num_row is counting table row		
    	if(!$result)
		{
			if(Debug)
				echo  mysql_error() . " @ function getbyField <br />";
			echo 'Por motivos técnicos não foi possível processar o seu pedido, por favor informe o administrador se o erro persistir';
			die();
			exit;
		}
		
		
		//a query dererá retornar unicamente um registo
		if( mysql_num_rows($result) != 1)
		{
			return;
		}
		
		
		//colocar o resultado num array e retorna-lo
		$contents = mysql_fetch_array($result, MYSQL_ASSOC);
		return $contents;
    }
    
	
	}
?>